//1、逐渐替换原字符

#include<stdio.h>
#include<string.h>
int main(){
    char arr []={"welcome!!!"};
    char arr1[]={"##########"};
    int left=0;
    int right=sizeof(arr)/sizeof(arr[0])-2;
    for(;left<=right;left++,right--){
        arr1[left]=arr[left];
        arr1[right]=arr[right];
        printf("%s\n",arr1);
    }
//    if (left==right){
//
//    }
    return 0;
}
//还是使用分为左右两个位置的方法
//使用string.h库函数中的strlen来算出数组中的最右下标
//Attention:【如果使用sizeof要考虑到字符串结束符\0也为一个字符】
//用第二个数组的内容替换第一个数组的内容，同时通过左++和右--的方式使范围逐渐缩小
//最终内容全为第二个数组内容


//    比特解法:
//#include<stdio.h>
//#include<string.h>
//int main(){
//    char arr1[]={"welcome!!!"};
//    char arr2[]={"##########"};
//    int left=0;
//    int right=strlen(arr1)-1;
//    while(left<=right){
//        arr2[left]=arr1[left];
//        arr2[right]=arr1[right];
//        printf("%s\n",arr2);
//        left++;
//        right--;
//    }
//    return 0;
//}




//2、字符串覆盖

//#include<stdio.h>
//#include<assert.h>//断言所需头文件
//char* scpy(char* arr1,char* arr2){
//    assert(arr1!=NULL);//断言，值为否时执行
//    assert(arr2!=NULL);
//    char* ret=arr1;//保留初始地址，若直接return *arr1，那return的是arr1最后一个元素的地址
//    //把arr2的元素放入arr1中，“\0”出现时结束
//    while(*arr1++=*arr2++){
//    };
//    return ret;
//}
//int main(){
//    char arr1[]="********";
//    char arr2[]="abc";
//    printf("%s",scpy(arr1,arr2));
//    return 0;
//}

//2、strcpy实现
//#include<stdio.h>
//#include <assert.h>
//
//char* cpy(char*arr,const char*arr1){
//    assert(arr!=NULL&&arr1!=NULL);
//    char *ret=arr;
//    while ((arr++==arr1++)!='\0')
//        return ret;
//}
//
//int main(){
//    char arr[]="zhang";
//    char arr1[]="yang";
//    printf("%s",cpy(arr,arr1));
//    return 0;
//}

//3、字符串逆序
//#include<stdio.h>
//#include<assert.h>
//int strlen(char* arr){
//    assert(arr!=NULL);
//    int count=0;
//    while(*arr!='\0'){
//        count++;
//        arr++;
//    }
//    return count;
//}
//void reverse(char* arr,int strlen){
//    char* left=arr,*right=arr+strlen-1;
//    char temp=0;
//    while(left<right){
//        temp=*left;
//        *left=*right;
//        *right=temp;
//        left++;
//        right--;
//    }
//}
//int main(){
//    char arr[256]={0};
//    scanf("%s",arr);
//    reverse(arr,strlen(arr));
//    int i=0;
//    printf("%s",arr);
//    return 0;
//}
//计算长度要解引用数组，使用指针交换两个变量，字符数组只能通过数组+长度的方法来使用那个元素，strlen实现中不要忘了count和arr都需要增加
//scanf可以改成gets(arr)可以加空格，这是得到整行
//assert尽量少用